// 导入数据库模块
const db = require('../db/index')
    // 导入处理密码的模块
const bcrypt = require("bcryptjs")

// 学生查询信息
exports.getUserinfo = (req, res) => {
        const sql = 'select name,student_id,email,class,sex,age,score from studentmsg where id=?'
        const userinfo = req.body
            //     // req 对象上的auth属性是token解析成功，只要身份认证成功express-jwt中间件帮我们挂载上去的
        db.query(sql, userinfo.id, (err, results) => {
            // 执行sql失败
            if (err) return res.cc(err)
                // 执行sql成功 但是没有查询到数据
                // if (results.length !== 1) return res.cc('获取用户信息失败')


            // 用户获取成功
            res.send({
                status: 200,
                msg: '获取用户信息成功',
                data: results[0],
            })
        })

    }
    //     // 签到成功改变status的状态
    // exports.updateStatus = (req, res) => {
    //     userinfo = req.body;
    //     const sql = 'UPDATE ev_users SET status = 1 WHERE id =?'
    //         //     // req 对象上的auth属性是token解析成功，只要身份认证成功express-jwt中间件帮我们挂载上去的
    //     db.query(sql, userinfo.id, (err, results) => {
    //         // 执行sql失败
    //         if (err) return res.cc(err)
    //             // 执行sql成功 但是没有查询到数据
    //             // if (results.length !== 1) return res.cc('获取用户信息失败')


//         // 用户获取成功
//         res.send({
//             status: 200,
//             msg: '签到成功',
//         })
//     })

// }
exports.updateStatu = (req, res) => {
    const sql = 'UPDATE ev_users SET status = 0 where id>0;'
        //     // req 对象上的auth属性是token解析成功，只要身份认证成功express-jwt中间件帮我们挂载上去的
    db.query(sql, (err, results) => {
        // 执行sql失败
        if (err) return res.cc(err)
            // 执行sql成功 但是没有查询到数据
            // if (results.length !== 1) return res.cc('获取用户信息失败')

        // 用户获取成功
        res.send({
            status: 200,
            msg: '修改成功',
        })
    })
}

exports.gettitle = (req, res) => {
    const sql = 'select title from title'
    db.query(sql, (err, results) => {
        if (err) return res.cc(err)
        if (results.length !== 1) return res.cc('获取用户信息失败')
        res.send({
            status: 200,
            msg: 'title获取成功',
            data: results[0]
        })
    })
}
exports.updatetitle = (req, res) => {
    const userinfo = req.body
    const sql = 'update title set title=? where title_id=1'
    db.query(sql, [userinfo.title], (err, results) => {
        if (err) return res.cc(err)
        if (results.affectedRows !== 1) return res.cc('title修改失败')
        return res.cc('修改成功', 200)
    })
}

// 教师查询信息 考勤成功的学生显示
exports.teacherUserinfo = (req, res) => {
    const sql2 = 'select * from studentmsg where attendendance=true'
    db.query(sql2, (err, results) => {
        if (err) return res.cc(err)
            // if (results.length !== 1) return res.cc('用户名不存在！')
            // console.log(results);

        res.send({
            status: 200,
            msg: '获取用户信息成功',
            data: results,
        })
    })
}

// 更新用户基本信息的处理函数
exports.updateUserinfo = (req, res) => {
    // res.send('ok')
    const userinfo = req.body
    const sql = 'update ev_users set ? where id=?'
    db.query(sql, [userinfo, userinfo.id], (err, results) => {
        if (err) return res.cc(err)
        if (results.affectedRows !== 1) return res.cc('修改失败')
        return res.cc('修改成功', 200)
    })
}

// 修改密码的处理函数
exports.updatePassword = (req, res) => {
    // res.send('成功')
    const sql = 'select * from ev_users where id=?'
    db.query(sql, req.auth.id, (err, results) => {
        if (err) return res.cc(err)
        if (results.length !== 1) res.cc('用户不存在')

        // 判断旧密码是否正确
        // 用户提交的是明文密码而数据库里面的是加密后的密码 所以需要借助bcrypt
        // bcrypt.compareSync(旧密码，新密码) 对比
        const compareResult = bcrypt.compareSync(req.body.oldPwd, results[0].password)
        if (!compareResult) return res.cc('旧密码错误')

        // 更新数据库的密码
        const sql2 = 'update ev_users set password=? where id=?'
            // 对新密码进行加密 再存进数据库
        const newPwd = bcrypt.hashSync(req.body.newPwd, 10)
        db.query(sql2, [newPwd, req.auth.id], (err, results) => {
            if (err) return res.cc(err)
            if (results.affectedRows !== 1) return ('修改失败')
            res.cc('修改成功', 200)
        })
    })
}

// 更新头像的处理函数
exports.updateAvatar = (req, res) => {
    const sql = 'update ev_users set user_pic=? where id=?'
    db.query(sql, [req.body.avatar, req.auth.id], (err, results) => {
        if (err) return res.cc(err)
        if (results.affectedRows !== 1) return res.cc('更新失败')
        res.cc('更新成功', 200)
    })
}

exports.GetStudent = (req, res) => {
    const userinfo = req.body;
    const sql = 'select * from studentmsg where id=?'
    db.query(sql, [userinfo.id], (err, results) => {
        if (err) return res.cc(err)
        if (results.length !== 1) return res.cc('查询失败')
        res.send({
            status: 200,
            msg: '查询成功',
            data: results,
        })
    })
}
exports.teacherScore = (req, res) => {
    const sql = 'select score from studentmsg where id=?';
    const userinfo = req.body;
    db.query(sql, userinfo.id, (err, results) => {
        if (err) return res.cc(err)
        if (results.length !== 1) return res.cc('查询失败')

        // console.log(results[0].score);
        const score = results[0].score
        userinfo.score = parseInt(userinfo.score) + score
        const sql2 = 'update studentmsg set score=? where id=?'
        db.query(sql2, [userinfo.score, userinfo.id], (err, results) => {
            if (err) return res.cc(err)
            if (results.affectedRows !== 1) return res.cc('评分失败')
            res.send({
                status: 200,
                msg: '评分成功',
                data: score,
            })
        })
    })

}

exports.teacherTostudent = (req, res) => {
    const userinfo = req.body
    const sql = 'update studentmsg set tostudent=? where id=?'
    db.query(sql, [userinfo.text, userinfo.id], (err, results) => {
        if (err) return res.cc(err)
        if (results.affectedRows !== 1) return res.cc('修改失败')
        res.send({
            status: 200,
            msg: '对学生评价成功',
        })
    })
}

exports.getAsk = (req, res) => {
    const userinfo = req.body
    const sql = 'select ask from studentmsg where id=?'
    db.query(sql, [userinfo.id], (err, results) => {
        if (err) return res.cc(err)
        if (results.length !== 1) return res.cc('查询失败')
        res.send({
            status: 200,
            msg: '查询成功',
            data: results,
        })
    })
}

exports.teacherAsk = (req, res) => {
    const userinfo = req.body
    const sql = 'update studentmsg set ask=? where id=?'
    db.query(sql, [userinfo.ask1, userinfo.id], (err, results) => {
        if (err) return res.cc(err)
        if (results.affectedRows !== 1) return res.cc('发生错误')
        res.send({
            status: 200,
            msg: '提问成功',
        })
    })
}